.set				noreorder

.equ				TRAINER_OFFSET, 0x00400000

;.org				0x800750C4
LUI	V1,	%hi(0x80000000 + TRAINER_OFFSET)		;
LW	V0,	%lo(0x7FFFFFFC + TRAINER_OFFSET)	(V1)	;
LUI	A0,	0xC0DE		;
BEQ	V0,	A0,		Execute
NOP
LUI	V0,		0xB1FF	;mips-elf-as hack; should be 0xB200
ORI	V0,	V0,	0xE000	;mips-elf-as hack; should be unnecessary
ORI	A0,	R0,	0x1FF8	;
				Load_Loop:
LD	A2,	0x0000	(V0)	;mips-elf-as hack; should be able to use 0xE000 as offset
ADDIU	V0,	V0,	0x0008	;
SD	A2,	%lo(0x80000000 + TRAINER_OFFSET)	(V1)	;
ADDIU	V1,	V1,	0x0008	;
BGTZL	A0,			Load_Loop
ADDIU	A0,	A0,	-0x0008	;((0x1FF8 + 0x8)/0x8) iterations * 8 bytes per iteration = 8 kb copied
				Execute:
J				TRAINER_OFFSET
;Fix checksums 0x10 and 0x14, respectively, to
;16CCD7E9
;94779E23
